package com.sunnyweather.android.ui.place

import androidx.lifecycle.*
import com.sunnyweather.android.logic.Repository
import com.sunnyweather.android.logic.model.Content

class PlaceViewModel : ViewModel() {

    private val searchLiveData = MutableLiveData<String>()

    val placeList = ArrayList<Content>()//用于对界面上显示的城市数据进行缓存。因为原则上与界面相关的数据都应该放在ViewModel中，
    // 这样可以保证它们的手机屏幕发生旋转的时候不会丢失

    val placeLiveData = Transformations.switchMap(searchLiveData) { query ->
        Repository.searchPlaces(query)
    }
    //将传入的搜索参数赋值给searchLiveData对象，并使用Transformations的switchMap()方法观察对象，否则仓库层返回的LiveData将无法观察
    //每当searchPlaces()函数被调用，switchMap()方法所对应的转换函数就会执行
    //重点
    //这个类似于俄罗斯套娃，每一层都调用searchPlaces()函数，实现数据在不同逻辑层的传递
    fun searchPlaces(query: String) {
        searchLiveData.value = query
    }

    fun savePlace(place: Content) = Repository.savePlace(place)

    fun getSavedPlace() = Repository.getSavedPlace()

    fun isPlaceSaved() = Repository.isPlaceSaved()
}